I=input
exec(int(I())*"n,a,b=map(int,I().split());s=x,*_=I();print(a*n+b*(n,s.count(x+'01'[x<'1'])+1)[b<0]);")
/*ahmedkhaled*/
#include<iostream>
#include<string>
#include<iomanip>
#include <algorithm>
#include <math.h>
#include <vector>
#include <stack>
#include <queue>
#include<set>
#include <array>
#define ll long long
#define flash ios::sync_with_stdio(false), cout.tie(NULL), cin.tie(NULL);
using namespace std;
/*void fun(int &a,int &b){
ll mn=min(a,b);
a-=mn;
b-=mn;
}*/
void go(){
int n,a,b;
cin>>n>>a>>b;
string s;cin>>s;
if(b>=0){
cout<<n*(a+b)<<'\n';
}else {
int sum=1;
for(int i=0;i+1<n;i++){
if((s[i]!=s[i+1]))
++sum;
}
cout<<a*n+b*(sum/2+1)<<'\n';
}
}
int main() {
int t;cin>>t;
while(t--){
go();
}
}
1382A - Common Subsequence | 1512D - Corrupted Array |
667B - Coat of Anticubism | 284B - Cows and Poker Game |
1666D - Deletive Editing | 1433D - Districts Connection |
2B - The least round way | 1324A - Yet Another Tetris Problem |
246B - Increase and Decrease | 22E - Scheme |
1566A - Median Maximization | 1278A - Shuffle Hashing |
1666F - Fancy Stack | 1354A - Alarm Clock |
1543B - Customising the Track | 1337A - Ichihime and Triangle |
1366A - Shovels and Swords | 919A - Supermarket |
630C - Lucky Numbers | 1208B - Uniqueness |
1384A - Common Prefixes | 371A - K-Periodic Array |
1542A - Odd Set | 1567B - MEXor Mixup |
669A - Little Artem and Presents | 691B - s-palindrome |
851A - Arpa and a research in Mexican wave | 811A - Vladik and Courtesy |
1006B - Polycarp's Practice | 1422A - Fence |